#ifndef INEXTPLAYER_H
#define INEXTPLAYER_H

#include "Player.h"

namespace dgame
{
	class ANextPlayer
	{
	protected:
	public:
		virtual Player *nextPlayer(Player **players, int size, Player *activePlayer, void *Data) = 0;
		virtual ANextPlayer *clone() = 0;
	};

	template<typename DerivedType>
	struct INextPlayer : ANextPlayer
	{
		virtual ANextPlayer *clone()
		{
			return new DerivedType(*static_cast<DerivedType*>(this));
		}
	};
}

#endif